package cn.vehicle.enums;

import cn.vehicle.domains.info.RtspNvrUrlInfo;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * NVR 类型枚举
 * <p>
 * 定义支持的 NVR 品牌类型及其对应的 RTSP 地址模板信息。
 * 每个枚举项封装一个 {@link RtspNvrUrlInfo} 对象，
 * 用于生成实时流与回放流的 RTSP 地址模板。
 * </p>
 *
 * <p>主要功能：</p>
 * <ul>
 *   <li>区分不同品牌 NVR 的 RTSP 地址规则；</li>
 *   <li>统一管理视频流模板信息；</li>
 *   <li>为 {@link cn.vehicle.utils.NvrUtil} 提供模板匹配数据源。</li>
 * </ul>
 */
@Getter
@AllArgsConstructor
public enum NvrTypeEnum {

    // 海康威视 NVR 配置：
    HIKVISION(
            new RtspNvrUrlInfo(
                    "rtsp://${username}:${pwd}@${host}/Streaming/Channels/${channel}",
                    "rtsp://${username}:${pwd}@${host}/Streaming/tracks/${channel}?starttime=${startTimeUTC}&endtime=${endTimeUTC}"
            )
    ),
    // 宇视（Uniview）NVR 配置：
    UNIVIEW(
            new RtspNvrUrlInfo(
                    "rtsp://${username}:${pwd}@${host}/unicast/${channel}/s1/live",
                    "rtsp://${username}:${pwd}@${host}/${channel}/b${startTimeS}/e${endTimeS}/replay/"
            )
    );


    // 封装该 NVR 类型的 RTSP 地址模板信息对象（包含实时与回放模板）
    private final RtspNvrUrlInfo rtspNvrUrlInfo;
}
